﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;
using System.Data.SqlClient;
using System.Numeric;
using System.Collections.Specialized;


namespace GestorDeFlotasDesktop.AbmAuto
{
    public partial class AbmAuto : MasterPage
    {
        public capaDatos.SQLSyntaxisGeneration inst = new capaDatos.SQLSyntaxisGeneration();
        ArrayList array = new ArrayList();
        Form FormularioPadre;
        DataTable dtgral;
        ArrayList parametrosSql = new ArrayList();
        public void initialize()
        {
        }

        public AbmAuto(Form formPadre)
        {
            InitializeComponent();
            ocultarMenu(ref FormularioPadre, formPadre);
        }

        private void textBox2_TextChanged(object sender, EventArgs e)
        {

        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }

        private void lblMarca_Click(object sender, EventArgs e)
        {

        }

        private void label5_Click(object sender, EventArgs e)
        {

        }
        private void btbNuevoReloj_Click(object sender, EventArgs e)
        {
            PopupEventArgs(new AbmReloj.AbmReloj(this));
        }

        private void PopupEventArgs(Form formulario)
        {
            formulario.Show();
        }

        private void AbmAuto_Load(object sender, EventArgs e)
        {
            visualizarControlesAlta(false);
            cargarComboReloj_Asignados();
            cargarComboMarca();
            chHabilitado.Checked = true;

        }
        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            setearCheckBox(e.RowIndex, array, dataGridView1, null, btAlta);
            btAlta.Visible = true;
            BTBaja.Visible = true;
            if (e.RowIndex < 0) { return; }

            if (array.Contains(e.RowIndex))
            {
                visualizarControlesAlta(true);
                BTBaja.Visible = false;
                modificarCampos(e.RowIndex);
            }
            else
            {
                visualizarControlesAlta(false);
                btAlta.Text = "Alta";
                BTBaja.Visible = true;
            }
        }

        private void visualizarControlesAlta(Boolean bandera)
        {
            lblRodado.Visible = bandera;
            txtRodado.Visible = bandera;
            btbNuevoReloj.Visible = bandera;
        }
        private void btAlta_Click(object sender, EventArgs e)
        {
            visualizarControlesAlta(true);
            cargarComboReloj_Libres();
            BTBaja.Text = "Dar Alta";
            btAlta.Visible = false;
            if (btAlta.Text == "Confirmar")

            {  
                ArrayList parametrosSql = new ArrayList();
                parametrosSql = parametrosStoredProcedure(paramsNames("marcaTaxi", "modeloTaxi", "licenciaTaxi", "RodadoTaxi", "idTaxi"), paramsValues(cmbMarca.Text, txtModelo.Text, txtLicencia.Text, txtRodado.Text, dtgral.Rows[Convert.ToInt32(array[array.Count - 1])].ItemArray[6]));
            dtgral = inst.executeSp("PELUSA.Modificar_auto", parametrosSql);
            if (confirmarOperacion(dtgral))
            {
                mensajeUpdate();
            }
            else { mensajeError(); }
        

            }

            ;
        }

        private void BTBaja_Click(object sender, EventArgs e)
        {
            chHabilitado.Checked = false;
            visualizarControlesAlta(false);
            btAlta.Visible = false;
            if (BTBaja.Text == "Dar Alta")
            {
                btAlta.Visible = false;
                ArrayList parametrosSql = new ArrayList();
                parametrosSql = parametrosStoredProcedure(paramsNames("marcaTaxi", "patenteTaxi", "modeloTaxi", "licenciaTaxi", "RodadoTaxi", "ModeloReloj"), paramsValues(cmbMarca.Text, txtPatente.Text, txtModelo.Text, txtLicencia.Text, txtRodado.Text, cmbReloj.Text));
                dtgral = inst.executeSp("PELUSA.Insertar_auto", parametrosSql);
           if (confirmarOperacion(dtgral))
            {
                mensajeInsert();
            }
           else { mensajeError(); }
          
            }
        }

        private void AbmAuto_FormClosing(object sender, FormClosingEventArgs e)
        {
            FormularioPadre.Visible = true;
        }



        private void modificarCampos(int numeroFila)
        {  // posicion 0 primera columna, prosicion comum,count - 1 ultima columna

            cmbMarca.Text = Convert.ToString(dtgral.Rows[numeroFila].ItemArray[0]);
            txtModelo.Text = Convert.ToString(dtgral.Rows[numeroFila].ItemArray[1]);
            txtPatente.Text = Convert.ToString(dtgral.Rows[numeroFila].ItemArray[2]);
            txtLicencia.Text = Convert.ToString(dtgral.Rows[numeroFila].ItemArray[3]);
            cmbReloj.Text = Convert.ToString(dtgral.Rows[numeroFila].ItemArray[4]);
            txtRodado.Text = Convert.ToString(dtgral.Rows[numeroFila].ItemArray[5]);
        }


        private void cargarComboReloj_Asignados()
        {

            DataTable modelo_Reloj;
            modelo_Reloj = inst.executeQuery("  Select m.modeloDescripcion from PELUSA.modeloReloj m, PELUSA.reloj r where m.idmodelo=r.modeloReloj and r.idReloj in ( select  t.relojTaxi from PELUSA.taxis t )  ");
            cmbReloj.DataSource = modelo_Reloj;
            cmbReloj.DisplayMember = modelo_Reloj.Columns[0].ColumnName;
            cmbReloj.Text = "";

        }

        private void cargarComboReloj_Libres()
        {

            DataTable modelo_Reloj;
            modelo_Reloj = inst.executeQuery(" Select m.modeloDescripcion from PELUSA.modeloReloj m, PELUSA.reloj r where m.idmodelo=r.modeloReloj and r.idReloj not in ( select  t.relojTaxi from PELUSA.taxis t ) ");

            cmbReloj.Text = "";

            cmbReloj.DataSource = modelo_Reloj;
            cmbReloj.DisplayMember = modelo_Reloj.Columns[0].ColumnName;
            cmbReloj.Text = "";

        }
        private void cargarComboMarca()
        {

            DataTable marcasTaxi;
            marcasTaxi = inst.executeQuery("select distinct nombreMarca  from PELUSA.marcaAuto");

            cmbMarca.DataSource = marcasTaxi;
            cmbMarca.DisplayMember = marcasTaxi.Columns[0].ColumnName;
            cmbMarca.Text = "";

        }


        private void BtbBuscar_Click(object sender, EventArgs e)
        {
            ArrayList parametrosSql = new ArrayList();
            parametrosSql = parametrosStoredProcedure(paramsNames("marcaTaxi", "rodado", "modeloTaxi", "patenteTaxi", "licenciaTaxi", "Reloj"), paramsValues(cmbMarca.Text, txtRodado.Text, txtModelo.Text, txtPatente.Text, txtLicencia.Text, cmbReloj.Text));

            dtgral = inst.executeSp("PELUSA.buscar_auto", parametrosSql);
            this.dataGridView1.DataSource = dtgral;
            //this.dataGridView1.DataSource = dtgral;
        }



        private void btClear_Click(object sender, EventArgs e)
        {

            limpiarCombos();
            dataGridView1.DataSource = "";
            dataGridView1.DataMember = "";
           
        

        }

        private void limpiarCombos() {   foreach (Control control in this.Controls)
            {

                if (control.GetType().FullName == "System.Windows.Forms.TextBox" | control.GetType().FullName == "System.Windows.Forms.ComboBox")
                {

                    control.Text = "";
                }
            }
}
        private void btbCancelar_Click(object sender, EventArgs e)
        {
            btAlta.Visible = true;
            btAlta.Text = "Alta";
            BTBaja.Visible = true;
            BTBaja.Text = "Baja";
            //dataGridView1.Rows.Clear();
            limpiarCombos();
        }

        private void chHabilitado_CheckedChanged(object sender, EventArgs e)
        {

        }

        private void chHabilitado_Click(object sender, EventArgs e)
        {
            parametrosSql.Clear();
            int valorBool;

            if (chHabilitado.Checked) { valorBool = 1; } else { valorBool = 0; };

            parametrosSql = parametrosStoredProcedure(paramsNames("CliHabilitado", "Patente"), paramsValues(valorBool, txtPatente.Text ));
            dtgral = inst.executeSp("PELUSA.Hab_DesHab_Taxi", parametrosSql);
            if (confirmarOperacion(dtgral))
            {
                mensajeDelete(valorBool);
            }
        }

        private void cmbReloj_SelectedIndexChanged(object sender, EventArgs e)
        {

        }



    }
}